package com.sykj.why.mongo.service;

import com.sykj.why.mongo.document.entity.AlbumT;
import com.sykj.why.mongo.dto.PageDTO;
import com.sykj.why.mongo.dto.entity.AlbumTDTO;
import com.sykj.why.mongo.vo.entity.AlbumTVo;
import com.sykj.why.util.Page;

import java.util.List;
import java.util.Map;

/**
 * @author Eleven
 * @date 2019/6/4
 * @date 专辑业务访问层
 */

public interface AlbumTService extends BaseService<AlbumT> {

    /**
     * 添加专辑
     * @param albumT
     */
    void saveAlbum(AlbumT albumT);

    /**
     * 删除专辑
     * @param id
     */
    void removeAlbum(String id);

    /**
     * 修改专辑
     * @param albumT
     */
    void updateAlbum(AlbumT albumT);

    /**
     * 启用/禁用专辑
     * @param id
     * @param flag
     */
    void disableOrEnable(String id,boolean flag);

    /**
     * 验证专辑名称是否重复
     * @param albumT
     */
    void verifyName(AlbumT albumT);

    /**
     * 通过id查询专辑
     * @param id
     * @return
     */
    AlbumT findById(String id);

    /**
     * 通过id查询专辑信息
     * @param id
     * @return
     */
    AlbumTVo findInfoById(String id);

    /**
     * 查询所有专辑
     * @return
     */
    List<AlbumT> findAll();

    /**
     * 分页查询专辑
     * @param albumTDTO
     * @return
     */
    Page findByPage(AlbumTDTO albumTDTO);

    /**
     * 增加浏览次数
     */
    void setViewCount(String id);

    /**
     * 查询菜单分类下的所有专辑列表
     * @param menuCategoryId
     * @return
     */
    List<AlbumT> findByMenuCategory(String menuCategoryId);

    /**
     * 首页数据
     * @param programaId
     * @param count 每个模块展示多少条
     * @return
     */
    Map<String,List<AlbumTVo>> homeData(String programaId,int count);

    /**
     * 根据站点Id查询该站点下的所有专辑
     * @param proogramaId
     * @return
     */
    List<AlbumT> findByProgramaId(String proogramaId);

}
